package schema

import (
	"time"
)

// Like 点赞收藏管理对象
type Like struct {
	ID          string    `json:"id"`                                          // 唯一标识
	VideoId     string    `json:"video_id" binding:"required"`                 // 内容ID
	Type        int       `json:"type" binding:"required,max=2,min=1"`         // 类型(1:点赞 2:收藏)
	ContentType int       `json:"content_type" binding:"required,max=2,min=1"` // 内容类型(1:语音 2:视频)
	Creator     string    `json:"creator"`                                     // 创建者
	CreatedAt   time.Time `json:"created_at"`                                  // 创建时间
	UpdatedAt   time.Time `json:"updated_at"`                                  // 更新时间
	GroupId     string    `json:"group_id"`
}

// LikeUpdate 点赞收藏管理对象
type LikeUpdate struct {
	ID          string    `json:"id"`                                           // 唯一标识
	VideoId     string    `json:"video_id" binding:"omitempty"`                 // 内容ID
	Type        int       `json:"type" binding:"omitempty,max=2,min=1"`         // 类型(1:点赞 2:收藏)
	ContentType int       `json:"content_type" binding:"omitempty,max=2,min=1"` // 内容类型(1:语音 2:视频)
	Creator     string    `json:"creator"`                                      // 创建者
	CreatedAt   time.Time `json:"created_at"`                                   // 创建时间
	UpdatedAt   time.Time `json:"updated_at"`                                   // 更新时间
}

func (a *LikeUpdate) ToLike() *Like {
	return &Like{
		ID:          a.ID,
		VideoId:     a.VideoId,
		Type:        a.Type,
		ContentType: a.ContentType,
		Creator:     a.Creator,
		CreatedAt:   a.CreatedAt,
		UpdatedAt:   a.UpdatedAt,
	}
}

// LikeQueryParam 查询条件
type LikeQueryParam struct {
	PaginationParam
	VideoId     string `form:"video_id"`     // 内容ID
	Type        int    `form:"type"`         // 类型(1:点赞 2:收藏)
	ContentType int    `form:"content_type"` // 内容类型(1:语音 2:视频)
	Creator     string `form:"creator"`      // 创建者

}

// LikeQueryOptions 查询可选参数项
type LikeQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// LikeQueryResult 查询结果
type LikeQueryResult struct {
	Data       Likes
	PageResult *PaginationResult
}

// Likes 点赞收藏管理列表
type Likes []*Like

// IDResult 响应唯一标识
type SetLikeResult struct {
	LikeNum int `json:"like_num"`
}
